import java.io.IOException;


public class MainPoker {

	/*public static void main(String[] args) {
		System.out.println("Witaj w grze \n \nPOKER ! \n");
		System.out.println("By zagrac wpisz 'stworz boty', by stworzyc przeciwnikow \npo stworzeniu przeciwnikow, wpisz 'start' \nby zaczac rozgrywke. \n reszta komend wyswietla sie po wpisaniu 'pomoc'");
		
		// zmienne do zczytywania danych wprowadzonych przez u�ytkownika
		byte[] buf = new byte[255];
		String s=null;
		
		// zmienne do gry
		boolean zaczetaGra = false;
		boolean stworzBoty = false;
		boolean wymienKarty = false;
		boolean zakoncz = false;
		int ileWymien=0;
		int jakaKarta=0;
		int ileBotow = 0;
		
		Player gracze[] = new Player[4];
		gracze[0] = new Human();
		Table stol = null;
		int wygryw=5;
		
		while(true)
		{
			if(!zakoncz){
				try 
				{
					buf = null;
					buf = new byte[255];
					System.in.read(buf);
					if(s != null) s = null;
					s = new String(buf);
					s = s.trim();
				}
				catch (IOException e) 
				{
					e.printStackTrace();
				}
			}
			
			if(stworzBoty)
			{
				try
				{
					ileBotow = Integer.parseInt(s);
				}
				catch(NumberFormatException e)
				{
					System.out.println("Zla liczba");
					continue;
				}
				if(ileBotow < 1){
					System.out.println("ERROR: Liczba botow jest za mala. \nConajmniej jeden bot musi zostac stworzony do rozgrywki.");
					continue;
				}
				else if(ileBotow > 3)
				{
					System.out.println("ERROR: Liczba botow jest za duza. \nMaksymalnie moze zostac stworzonych trzech botow w rozgrywce.");
					continue;
				}
				else
				{
					for(int i = 1; i < 4; i++)
					{
						gracze[i] = null;
						if(ileBotow > 0)
						{
							gracze[i] = new Bot();
							ileBotow--;
						}
					}
					System.out.println("INFO: Boty zostaly stworzone ! Mozesz zaczac rozgrywke komenda 'start'\nmozesz tez ponownie stworzyc boty komenda 'stworz boty'");
				}
				stworzBoty = false;
				continue;
			}
			if(s.compareTo("zakoncz")==0 || zakoncz)
			{
				if(zaczetaGra)
				{
					for(int i = 1; i < gracze.length; i++)
					{
						if(gracze[i] != null)
						{
							gracze[i].BotStrategy(stol);
						}
					}
					wygryw = stol.porownajWszystGraczy(gracze);
					if(wygryw == 5)
					{
						System.out.println("\n       REMIS ! \n");
					}
					else
					{
						if(wygryw == 0)
							System.out.println("\n       WYGRANA ! \n");
						else
						 System.out.println("\n       PRZEGRANA \n");
					}
					System.out.println("\n     Uklady graczy\n");
					for(int i = 0; i < gracze.length; i++)
					{
						if(gracze[i] != null)
						{
							if(i==0) 
								System.out.println("Twoj uklad: "+gracze[i].pokazUklad());
							else
								System.out.println("Bot numer "+i+": "+gracze[i].pokazUklad());
						}
					}
					System.out.println("\n");
				}
				System.out.println("Koniec gry !");
				break;
			}
			if(s.compareTo("pomoc")==0)
			{
				System.out.println("Przed rozgrywka mozesz uzywac komend:");
				System.out.println("* 'stworz boty' - polecenie tworzace boty (od 1 do 3)");
				System.out.println("* 'start' - polecenie zaczynajace rozgrywke (wczesniej nalezy stworzyc boty)");
				System.out.println("\nW czasie rozgrywki:");
				System.out.println("* 'zobacz karty' - polecenie, ktore wyswietla karty gracza");
				System.out.println("* 'wymien' - polecenie, ktore wymienia karty gracza");
				System.out.println("* 'zakoncz' - polecenie konczace rozgrywke (mozna uzyc w dowolnym momecie)");
			}
			else
			{
				if(zaczetaGra)
				{
					if(wymienKarty)
					{
						if(ileWymien > 0)
						{
							try
							{
								jakaKarta = Integer.parseInt(s);
							}
							catch(NumberFormatException e)
							{
								System.out.println("Zla liczba");
								continue;
							}
							if(jakaKarta < 0 || jakaKarta > 4)
							{
								System.out.println("ERROR: Zly numer id");
								continue;
							}
							stol.zamienKarte(gracze[0], jakaKarta);
							ileWymien--;
							if(ileWymien == 0)
							{
								wymienKarty = false;
								System.out.println("\n\nID  Nazwa karty");
								gracze[0].pokazKarty();
								//System.out.println("INFO: Wymieniles juz wszystkie karty. Wcisnij enter.");
								zakoncz = true;
							}
							else
							{
								System.out.println("SYS: Jaka karte chcesz wymienic ? (Wpisz numer id od 0 do 4) \nDo wymiany zostaly "+ileWymien+" karty.\n");
								System.out.println("ID  Nazwa karty");
								gracze[0].pokazKarty();
							}
							continue;
						}
						else //if(ileWymien == 0)
						{
							try
							{
								ileWymien = Integer.parseInt(s);
							}
							catch(NumberFormatException e)
							{
								System.out.println("Zla liczba");
								continue;
							}
							if(ileWymien < 1)
							{
								System.out.println("ERROR: Liczba kart do wymiany jest za mala. Musi byc wiesza niz jeden, ale nie wieksza niz 4.");
								ileWymien = 0;
								continue;
							}
							else if(ileWymien > 4)
							{
								System.out.println("ERROR: Liczba kart do wymiany jest za duza. Musi byc wiesza niz jeden, ale nie wieksza niz 4.");
								ileWymien = 0;
								continue;
							}
							System.out.println("SYS: Jaka karte chcesz wymienic ? (Wpisz numer id od 0 do 4) \n Do wymiany zostaly "+ileWymien+" karty.");
							System.out.println("ID  Nazwa karty");
							gracze[0].pokazKarty();
							continue;
						}
					}
					else
					{
						if(s.compareTo("wymien")==0)
						{
							System.out.println("SYS: Ile kart chcesz wymienic ? (od 1 do 4)");
							wymienKarty = true;
							continue;
						}
						else if(s.compareTo("zobacz karty")==0)
						{
							System.out.println("ID  Nazwa karty");
							gracze[0].pokazKarty();
							continue;
						}
					}
				}
				else
				{
					
					if(!stworzBoty)
					{
						if(s.compareTo("stworz boty")==0)
						{
							System.out.println("SYS: Ile stworzyc botow do gry ? (od 1 do 3)");
							stworzBoty = true;
							continue;
						}
						else if(s.compareTo("start")==0)
						{
							if(gracze[1] == null)
							{
								System.out.println("ERROR: Najpierw musisz stworzyc boty ! Sluzy do tego komenda 'stworz boty'");
								continue;
							}
							stol = new Table(gracze);
							System.out.println("INFO: Rozgrywka zostala rozpoczeta !");
							System.out.println("\n        Twoje karty \n");
							System.out.println("ID  Nazwa karty");
							gracze[0].pokazKarty();
							System.out.println("SYS: By wymienic karty wpisz 'wymien' \n Jezeli nie chcesz wymienic ukladu, wpisz 'zakoncz'");
							zaczetaGra = true;
							continue;
						}
					}
				}
			}
			System.out.println("ERROR: Nie ma takiego polecenia.");
		}

	}*///ggggggggg

}
